//给定一个字符串，其中可能存在着形如aba的子字符串，即由三个相邻的字符组成，第一个和第三个字符相同，而第二个不同
//请移除字符串中所有这样的驼峰字符串
//如果移除后新的字符串中还能组成驼峰字符串，也要移除

import java.util.*;

public class Main {
    public static void main(String[] args) {
        String test = "aBBdcBB";
        Main test1 = new Main();
        String res = test1.removeTuo(test);
        System.out.println(res);
    }

    public String removeTuo(String str) {
        if (str.length() < 3) return str;
        List<Character> chars = new ArrayList();//list的remove超好用，但是后面我又踩坑了
        int l = 0;
        while (l < str.length()) {
            chars.add(str.charAt(l++));
        }
        int p = chars.size();//初始字符串的长度
        int i = 0;//循环元素索引
        while (i < chars.size() - 2) {
            if (chars.get(i) == chars.get(i + 2) && chars.get(i) != chars.get(i + 1)) {
                //这里一开始我写的是remove(i),remove(i+1),remove(i+2)三连坑..
                chars.remove(i);
                chars.remove(i);
                chars.remove(i);
            }
            i++;
            int q = chars.size();//去除驼峰后的新字符串长度
            if (i != chars.size() - 2 && p != q) {//第一种理解：轮询完整个个字符串并且剩下的新字符串长度不等于旧字符串长度==》可能新字符有驼峰字串
                if (p != q) {       //第二种理解：每轮询到一次驼峰字串将其删除后将剩下的字符串当作一个新的字符串重新开始轮询
                    p = chars.size(); //重置字符串长度（新变旧）
                    i = 0; //从新字符串的第一个元素开始循环查找
                }
            }
        }
            return new String(chars.toString());
    }
}
